dice 您所在的位置:网站首页 catan 攻略 dice

dice

2023-08-21 07:06| 来源: 网络整理| 查看: 265

题目地址:dice_game

从这篇开始就正式进入高手进阶区,一些简单的知识点我这里就不会再重复赘述了,请有需要的同学看前面的章节。

废话不多,看看题目

题目没什么提示,只是知道这个题目的来源是:XCTF 4th-QCTF-2018

下载附件,看看情况,照例做下保护机制检查

root@mypwn:/ctf/work/python/dice_game# checksec dice_game [*] '/ctf/work/python/dice_game/dice_game' Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled

打开了各种限制条件,作为难度为1的题目,感觉有点吓唬人哩!

没事,先做下反编译

高手进阶区的题目,我会先对反编译之后的c语言代码做下命名修改,方便同学们可以快速理解,要不然v1、v2这种变量函数命名对于复杂题目的快速判断会造成不小的干扰。

下面我就直接把我已经修改好命名的c语言代码贴出来,这个程序主要有三个函数,我按照函数的意义进行了重命名,分别是main, go_game, get_flag。

先看下main函数:

__int64 __fastcall main(__int64 a1, char **a2, char **a3) { char szName[55]; // [rsp+0h] [rbp-50h] char nResultGame; // [rsp+37h] [rbp-19h] ssize_t nLenName; // [rsp+38h] [rbp-18h] unsigned int seed[2]; // [rsp+40h] [rbp-10h] unsigned int nRound; // [rsp+4Ch] [rbp-4h] memset(szName, 0, 0x30uLL); *(_QWORD *)seed = time(0LL); printf("Welcome, let me know your name: ", a2); fflush(stdout); nLenName = read(0, szName, 0x50uLL); if ( nLenName 0 && nInputPoint


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有